﻿
namespace MIAP.Negocio
{
    using System.Collections.Generic;
    using System.Linq;
    using MIAP.DataAccess.Interfaces;
    using MIAP.Entidades;

    /// <summary>
    /// Clase que contiene las operaciones de negocio para Administración de Usuarios.
    /// </summary>
    public class AdministrarUsuariosNegocio
    {
        #region Campos

        /// <summary>
        /// Instancia para el acceso a datos de Administración de Usuarios.
        /// </summary>
        private readonly IUsuarioDao daoUsuarios;

        #endregion

        #region Constructor

        /// <summary>
        /// Inicializa una nueva instancia <see cref="AdministrarUsuariosNegocio"/>
        /// </summary>
        public AdministrarUsuariosNegocio()
        {
            this.daoUsuarios = DataAccessFactory.Instance.CreateUsuariosDao();
        }

        #endregion

        #region Metodos

        /// <summary>
        /// Obtiene la información de todos los usuaios.
        /// </summary>
        /// <returns>Lista con la información de todos los usuarios.</returns>
        public List<UsuarioInfo> GetSingleUsuarios(UsuarioInfo usuario)
        {
            List<UsuarioInfo> listaUsuarios = this.daoUsuarios.GetSingleUsuarios(usuario).ToList();

            return listaUsuarios;
        }

        ///// <summary>
        ///// Obtiene todos los usuarios dependiendo del filtro usuario.
        ///// </summary>
        ///// <param name="usuario">Filtro usuario.</param>
        ///// <returns>Lista con la información de los usuarios.</returns>
        //public List<UsuarioInfo> GetUsuariosByFilters(UsuarioInfo usuario)
        //{
        //    List<UsuarioInfo> listUsuarios = this.daoUsuarios.GetUsuarios(usuario).ToList();

        //    return listUsuarios;
        //}      

        /// <summary>
        /// Cambia el estatus del usuario.  
        /// </summary>
        /// <param name="idUsuario">id del usuario a cambiar el estatus</param>
        /// <param name="estatus">true si se requiere activar false en caso contrario</param>
        public void ChangeEstatusUsuario(int idUsuario, bool estatus)
        {
            this.daoUsuarios.ChangeEstatusUsuario(idUsuario, estatus);
        }

        #endregion
    }
}
